package cn.kent.nio.byteBuffer;

import java.nio.ByteBuffer;

import static cn.kent.nio.byteBuffer.util.ByteBufferUtil.debugAll;

/**
 * {@link java.nio.ByteBuffer} 的一些方法使用
 * 1. rewind 从头开始读
 * 2. mark & reset mark做一个标记，记录position位置，reset是将position重置到mark位置
 * 3. get(i) 返回索引i对应位置的数据，不会影响读索引位置
 */
public class TestByteBufferRead {
    public static void main(String[] args) {
        final ByteBuffer buffer = ByteBuffer.allocate(10);
        buffer.put(new byte[]{'a', 'b', 'c', 'd'});
        buffer.flip();

        /*// rewind 从头开始读
        buffer.get(new byte[4]);
        debugAll(buffer);
        buffer.rewind();
        System.out.println((char) buffer.get());*/

        /*// mark & reset
        // mark做一个标记，记录position位置，reset是将position重置到mark位置
        System.out.println((char) buffer.get());
        System.out.println((char) buffer.get());
        buffer.mark(); // 加标记，索引2 的位置
        System.out.println((char) buffer.get());
        System.out.println((char) buffer.get());
        buffer.reset(); // 将position重置到索引2
        System.out.println((char) buffer.get());
        System.out.println((char) buffer.get());*/

        // get(i) 不会改变读索引位置
        System.out.println((char) buffer.get(2));
        debugAll(buffer);

    }
}
